from collections import Counter

my1 = [0, 1, 2]
print(my1[0], end='')
my_list = [[0, 1], 2, 3]
print(my_list[0][1])


class Student:
    def add(self, x, y):
        return x + y


student = Student()
num = student.add(1, 2)
print(num)
# 查询my1中"0"元素的下标值，不存在会报错
print(my1.index(0))

my_list = [1, 2, 3, 2, 4, 2]
element_to_remove = 2
new_list = [x for x in my_list if x != element_to_remove]
# 若想修改原列表，可重新赋值
print(new_list)
print(my_list)


def count(list, to_remove):
    num = 0
    for item in list:
        if item == to_remove:
            num += 1
    return num


my_list = [1, 2, 3, 4, 5, 6, 6, 6]
num = count(my_list, 6)
print(num)

print(Counter([1, 1, 1, 1, 1, 1])[1])
print("-----------------------------------")

print(list(dict.fromkeys([1, 1, 1])))  # 输出: [1]
print(sum(filter(lambda x: x % 2 == 0, range(1, 101))))  # 输出结果：2550
print(dict(Counter([1, 1, 1, 1])))  # {1: 4}
print(Counter([1, 1, 1, 1]))  # Counter({1: 4})
print(list(Counter([1, 1, 1, 1])))  # 输出: [1]


def fibonacci():
    a, b = 0, 1
    while True:
        yield a
        a, b = b, a + b


fib = fibonacci()
for _ in range(10):
    print(next(fib))
print("-----------")

print(sum([i for i in range(1, 101) if i % 2 == 0]))
"""
append(object) ：在列表末尾追加一个对象 。
extend(iterable) ：在列表末尾追加一个可迭代对象（如列表、元组等）中的所有元素 。
insert(index, object) ：在指定索引位置index前插入对象object 。
remove(value) ：删除列表中第一个值为value的元素 ，若元素不存在则报错。
pop(index=-1) ：删除并返回指定索引index位置的元素，默认删除并返回最后一个元素 。
clear() ：清空列表，移除所有元素 。
ndex(value, start=0, stop=len(list)) ：返回值为value的元素在列表中第一次出现的索引，可指定查找范围start到stop，若元素不存在则报错 。
count(value) ：统计值为value的元素在列表中出现的次数 。
reverse() ：原地反转列表元素顺序 。
sort(key=None, reverse=False) ：原地对列表进行排序。key指定排序依据的函数，reverse为True时降序排序，默认为升序 。
copy() ：返回列表的浅拷贝 。

-----------------------------------------------------------------------------
 Python 中，统计列表中某个元素出现次数，有以下几种常见方法：
方法一：使用list.count() 方法
这是最简单直接的方式。count()是列表对象的内置方法，语法为list.count(element) ，其中list是待统计的列表，element是要统计出现次数的元素，该方法会返回element在列表中出现的次数。示例如下：

python
fruits = ['apple', 'banana', 'apple', 'orange', 'banana', 'banana']
banana_count = fruits.count('banana')
print(banana_count) 
方法二：手动遍历计数
通过遍历列表，使用一个计数器变量来统计目标元素出现次数。可以自定义函数实现，适用于基础场景或对统计逻辑有特殊需求时。示例代码如下：

python
def count_element_occurrence(lst, element):
    count = 0
    for item in lst:
        if item == element:
            count += 1
    return count
fruits = ['apple', 'banana', 'apple', 'orange', 'banana', 'banana']
banana_count = count_element_occurrence(fruits, 'banana')
print(banana_count) 
方法三：使用collections.Counter 类
collections是 Python 的内置模块，Counter类能高效地对可迭代对象（包括列表）中的元素进行计数。虽然它一般用于统计所有元素的出现次数，但获取单个元素的统计结果也很方便。示例如下：

python
from collections import Counter
fruits = ['apple', 'banana', 'apple', 'orange', 'banana', 'banana']
fruit_counts = Counter(fruits)
banana_count = fruit_counts['banana']
print(banana_count) 


这种方式在统计多个元素出现次数时优势明显，还可配合most_common() 方法获取出现次数最多的元素等信息 ，比如fruit_counts.most_common(2) 会返回出现次数最多的前 2 个元素及其次数。

一般来说，若仅统计单个元素且列表规模较小，list.count() 简单易用；涉及大规模数据或需统计多个元素，Counter类更高效。

------------------------------------------------------------------------
在 Python 中，从列表中删除所有出现的指定元素，有以下几种常见方法：
方法一：使用while循环结合remove()方法
remove() 方法可删除列表中第一个匹配的元素。由于它每次只删一个，要删完所有匹配元素，需配合while循环。当列表中存在指定元素时，就持续调用remove() 。示例代码如下：

python
my_list = [1, 2, 3, 2, 4, 2]
element_to_remove = 2
while element_to_remove in my_list:
    my_list.remove(element_to_remove)
print(my_list)

不过这种方式在列表元素较多时，每次删除都要重新查找元素位置，效率较低。
方法二：使用列表推导式
列表推导式可快速创建新列表。遍历原列表，将不等于指定元素的其他元素添加到新列表，新列表即删除指定元素后的结果。示例代码如下：

python
my_list = [1, 2, 3, 2, 4, 2]
element_to_remove = 2
new_list = [x for x in my_list if x != element_to_remove]
# 若想修改原列表，可重新赋值
my_list = new_list
print(my_list)

该方法简洁高效，适用于处理大规模数据 ，但会创建新列表，占用额外内存。
方法三：使用filter()函数
filter() 函数接收一个函数和一个可迭代对象（列表 ）作为参数，根据函数返回的True或False ，决定是否保留可迭代对象中的元素。示例代码如下：

python
my_list = [1, 2, 3, 2, 4, 2]
element_to_remove = 2
new_list = list(filter(lambda x: x != element_to_remove, my_list))
# 若要修改原列表，可重新赋值
my_list = new_list
print(my_list)


filter() 返回的是迭代器，转换为列表才能查看结果。此方法不会修改原始列表，处理大型数据集时比列表推导式更节省内存 。
方法四：倒序遍历结合del语句
倒序遍历列表，这样在删除元素时不会影响后续元素的索引。当遇到指定元素时，使用del语句删除。示例代码如下：

python
my_list = [1, 2, 3, 2, 4, 2]
element_to_remove = 2
for i in range(len(my_list) - 1, -1, -1):
    if my_list[i] == element_to_remove:
        del my_list[i]
print(my_list)


这种方式是在原列表上直接操作，无需额外空间，但代码相对复杂些。

"""
